const key = '732a7c835ba55a5c85b52ca994bb1211';
const getLocation = () => {
    return new Promise((resolve) => {
        if ("geolocation" in navigator) {
            // 浏览器支持 Geolocation
            navigator.geolocation.getCurrentPosition(function (position) {
                console.log(position);

                // 定位成功后执行的回调函数
                var latitude = position.coords.latitude; // 纬度
                var longitude = position.coords.longitude; // 经度
                console.log("当前位置的经纬度: 纬度 " + latitude + ", 经度 " + longitude);
                resolve({
                    latitude,
                    longitude
                })
                // 可以在此处进一步处理或使用地理位置信息
            }, function (error) {
                console.log(error);
                resolve(null);
                // 定位失败时执行的回调函数
                switch (error.code) {
                    case error.PERMISSION_DENIED:
                        console.log("用户拒绝对获取地理位置的请求");
                        break;
                    case error.POSITION_UNAVAILABLE:
                        console.log("位置信息不可用");
                        break;
                    case error.TIMEOUT:
                        console.log("请求用户地理位置超时");
                        break;
                }
            }, {
                // 可选参数，配置定位选项
                enableHighAccuracy: false, // 提高精度（可能会影响耗电量）
                // timeout: 5000, // 超时时间（毫秒）
                // maximumAge: 0 // 缓存位置信息的最大有效时间（毫秒）
            });
        } else {
            // 浏览器不支持 Geolocation
            console.log("您的浏览器不支持地理定位功能");
        }
    })
}

const getIpLocation = () => {
    return new Promise((resolve) => {
        fetch(`https://restapi.amap.com/v3/ip?output=json&key=${key}`)
            .then(response => response.json())
            .then(data => {
                if (data.status === '1') {
                    resolve(data)
                } else {
                    console.log(data);
                }
            }).catch(error => {
                console.error('获取定位失败：', error);
            });
    })
}

const getReverseGeocoding = (latitude: number, longitude: number) => {
    return new Promise((resolve) => {
        fetch(`https://restapi.amap.com/v3/geocode/regeo?output=xml&location=${longitude},${latitude}&key=${key}`)
            .then(response => response.json())
            .then(data => {
                if (data.status === '1') {
                    resolve(data.regeocode)
                } else {
                    console.log(data);
                }
            })
            .catch(error => {
                console.error('获取地址失败：', error);
            });
    })
}

const getWeather = (city: string, extensions: string = 'base') => {
    return new Promise((resolve) => {
        fetch(`https://restapi.amap.com/v3/weather/weatherInfo?city=${city}&key=${key}&extensions=${extensions}`)
            .then(response => response.json())
            .then(data => {
                if (data.status === '1') {
                    resolve(data)
                } else {
                    console.log(data);
                }
            })
            .catch(error => {
                console.error('获取地址失败：', error);
            });
    })
}


export default {
    getLocation,
    getWeather,
    getIpLocation,
    getReverseGeocoding
}